home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / string / memmove.c < prev    next >
C/C++ Source or Header  |  1990-05-29  |  946b  |  44 lines

  1. /*
  2.  * memmove.c --
  3.  *
  4.  * Just like memcpy, but memmove is guaranteed to work even if
  5.  * the regions overlap.
  6.  *
  7.  * Copyright (c) 1985 Regents of the University of California.
  8.  * All rights reserved.
  9.  *
  10.  * Redistribution and use in source and binary forms are permitted
  11.  * provided that this notice is preserved and that due credit is given
  12.  * to the University of California at Berkeley. The name of the University
  13.  * may not be used to endorse or promote products derived from this
  14.  * software without specific written prior permission. This software
  15.  * is provided ``as is'' without express or implied warranty.
  16.  */
  17.  
  18. #ifndef lint
  19. static char rcsid[] = "$Header$";
  20. #endif
  21.  
  22. #include <string.h>
  23.  
  24. char *
  25. memmove(t, f, n)
  26.     register char *t, *f;
  27.     register int n;
  28. {
  29.     register char *p = t;
  30.  
  31.     if (t <= f) {
  32.         while (--n >= 0) {
  33.         *t++ = *f++;
  34.         }
  35.     } else {
  36.         t += n;
  37.         f += n;
  38.         while (--n >= 0) {
  39.         *--t = *--f;
  40.         }
  41.     }
  42.     return (p);
  43. }
  44.